home *** CD-ROM | disk | FTP | other *** search
- """This module contains the LibGladeApplication class."""
-
- import signal
- import gtk
- from gtk import glade
-
- from GtkAttributesFacade import GtkAttributesFacade
-
-
- class LibGladeApplication:
-
- """This is the base class for applications that use Glade.
-
- The following attributes are used:
-
- xml - This is an instance of glade.XML which encapsulates the Glade GUI.
-
- The following private variables are used:
-
- _signalsAreDone - The UNIX signal handlers only have to be set once.
-
- """
-
- _signalsAreDone = False
-
- def __init__(self, gladeFile):
- """Setup the appropriate signal handlers and call setHandlers."""
- if not self._signalsAreDone:
- self._signalsAreDone = True
- signal.signal(signal.SIGINT, signal.SIG_DFL)
- self.xml = glade.XML(gladeFile)
- self.setHandlers()
-
- def setHandlers(self):
- """Automatically autoconnect all of the handlers.
-
- Any methods (even in subclasses) that start with "on_" will be treated
- as a handler that is automatically connected to by
- xml.signal_autoconnect.
-
- """
- handlers = {}
- for i in dir(self):
- if i.startswith("on_"):
- handlers[i] = getattr(self, i)
- self.xml.signal_autoconnect(handlers)
-
- def __getattr__(self, name):
- """If self doesn't have the attribute, check self.xml.
-
- If self.xml does have the attribute, wrap it in a GtkAttributesFacade
- instance, cache it in self, and return it.
-
- """
- obj = self.xml.get_widget(name)
- if obj:
- obj = GtkAttributesFacade(obj)
- setattr(self, name, obj)
- return obj
- raise AttributeError("%s instance has no attribute '%s'" %
- (self.__class__.__name__, name))
-
- def on_quit_activate(self, *args):
- """Ignore args and call gtk.mainquit()."""
- gtk.main_quit()
-